//
//  YHKLoginModelView.swift
//  xinlangweiBo2
//
//  Created by 杨和逵 on 16/2/29.
//  Copyright © 2016年 yanghekui. All rights reserved.
//

import UIKit
import AFNetworking

class YHKLoginModelView: NSObject {

    
    //Swift里的单例
    static let shareInstance = YHKLoginModelView()
    
    //给Model赋值
    var model:YHKLoginModel?
    
    
    //get方法，进行读取
    var access_token:String?{
        
        
        return model?.access_token
    }
    
    //定义一个熟悉，判断是否登录
    var isLogin: Bool{
        
//        return model?.access_token == nil ? true : false
        
        return model?.access_token == nil ? false : true
    }
    
    private override init() {
        
        super.init()
        
        
        model = YHKLoginModel.redaObject("inof.aaaa")
    }
    
    
    
    
//MARK: 通过code来获取Tocken    
    func loadToken(subCode:String,duiBlock:()->(),cuoBloc:()->()){
        //创建一个管理者
        let manager = AFHTTPSessionManager()
        
        //修改请求方式的类型，类型为text/plain
        manager.responseSerializer.acceptableContentTypes?.insert("text/plain")
        
        
        
        let parameters = [
            "client_id":App_Key,
            "client_secret":App_Secret,
            "grant_type":"authorization_code",
            "code":subCode,
            "redirect_uri":App_URL
            
            
            
        ]
        
        
        
        //发送一个POST请求
        manager.POST("https://api.weibo.com/oauth2/access_token", parameters: parameters, progress: nil, success: { (_, JSON) -> Void in
            //        print(JSON)
            
            //拿到JSON数据后要讲数据转为模型
            //1.判断JSON是否是数组
            if let Odict = JSON as? [String : NSObject]{
                
                //系统提示的强制解包，很容易蹦
                let userModel = YHKLoginModel(dict: Odict )
                
                //拿到userModel模型后，可以去请求获取个人信息，来加载显示页面了
                self.loadPerionInfo(userModel, duiBlock: duiBlock, cuoBloc:cuoBloc)
                
                
                
            }
            
            
            
            }) { (_, errer) -> Void in
                
                print(errer)
                
                cuoBloc()
        }
    }
    
    
    
    
    
    
    
 //MARK:通过Toekn来获取个人信息
    func loadPerionInfo(userModel:YHKLoginModel,duiBlock:()->(),cuoBloc:()->()){
        
        //创建一个管理者
        let manager = AFHTTPSessionManager()
        
        //拼接参数
        let parameters = [
            "access_token":userModel.access_token ?? "",
            "uid":userModel.uid ?? ""
            
            
        ]
        
        
        //发送GET请求
        manager.GET("https://api.weibo.com/2/users/show.json", parameters: parameters, progress: nil, success: { (_, JSON) -> Void in
            
            //            print(JSON)
            //现在，我们需要拿到===名称===图片===然后存入沙盒中
            
            if let dict = JSON as?[String:NSObject]{
                
                userModel.profile_image_url = dict["profile_image_url"] as? String
                userModel.screen_name = dict["screen_name"] as? String
                
                //归档
                userModel.addShuJu("inof.aaaa")
                
                //拿到数据赋值给model
               self.model = userModel
                
                
                duiBlock()
                
                
                
                
            }
            
            
            
            }) { (_, error) -> Void in
                print(error)
                
                //失败
                cuoBloc()
        }
        
        
        
    }
    
    
}
